package pos.data;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;

import Clases.domain.Barrio;
import Clases.domain.Zona;

public class JDBCBarrioDAO implements IBarrioDAO {

	private Connection conn;
	IZonaDAO zona;

	public JDBCBarrioDAO() {

		conn = ConnectionManager.getInstance().checkOut();
		zona = new JDBCZonaDAO();
	}

	protected void finalize() {
		ConnectionManager.getInstance().checkIn(conn);
	}

	// ESTE METODO VAE PARA ALGO??
	//Mirar el metodo de productdao que te da un producto
	//deberia tener un metodo que segun el nombre del barrio me devuelva un
	//barrio de la base de datos o ta bien como esta (el reciclajestore)
	
	// public Barrio selectBarrio(Integer barrioOID) {

	// String sql = "SELECT * FROM Barrio B WHERE (B.barrioOID = barrioOID) ";
	// PreparedStatement stmt = null;
	// ResultSet result = null;
	// Barrio b = new Barrio();

	// try {
	// stmt = conn.prepareStatement(sql);
	// result = stmt.executeQuery();

	// if (result.next()) {
	// String barrioid = result.getString("barrioOID");
	// List zonas = (List) zona.selectZonasBarrio(conn, barrioid);

	// b.setNombre(result.getString("nombre"));
	// b.setZonas(zonas);
	// }
	// } catch (SQLException e) {
	// System.out.println("Message: " + e.getMessage());
	// System.out.println("SQLState: " + e.getSQLState());
	// System.out.println("ErrorCode: " + e.getErrorCode());
	// } finally {
	// try {
	// if (result != null) {
	// result.close();
	// }

	// if (stmt != null) {
	// stmt.close();
	// }
	// } catch (SQLException e) {
	// }
	// }

	// return b;
	// }

	public List selectAllBarrios() {

		PreparedStatement stmt = null;
		List barrios = new LinkedList();
		ResultSet result = null;
		String sql = "SELECT * FROM Barrio";

		try {

			stmt = conn.prepareStatement(sql);
			result = stmt.executeQuery();
			while (result.next()) {

				Barrio b = new Barrio();
				List zonas = (List) zona.selectZonasBarrio(conn, result.getInt("barrioOID"));

				b.setNombre(result.getString("nombre"));
				b.setZonas(zonas);
				barrios.add(b);

			}
		} catch (SQLException e) {
			System.out.println("Message: " + e.getMessage());
			System.out.println("SQLState: " + e.getSQLState());
			System.out.println("ErrorCode: " + e.getErrorCode());
		} finally {
			try {
				if (result != null)
					result.close();
				if (stmt != null)
					stmt.close();
			} catch (SQLException e) {
			}

		}
		return barrios;
	}

}